// 柯里化案例
const _ = require("lodash");

// 不使用柯里化时需要每次定义
"".match(/\s+/g);
"".match(/\d+/g);

// 使用柯里化改造之后 让一个函数生成一个函数
const match = _.curry(function (reg, str) {
    return str.match(reg);
});

const haveSpace = match(/\s+/g);
const haveNumber = match(/\d+/g);

const filter = _.curry((func, array) => array.filter(func));

const findSpace = filter(haveSpace);

console.log(haveSpace("hello world"));
console.log(haveNumber("abc123"));

console.log(filter(haveSpace, ["hello world", "hello_world"]));

console.log(findSpace(["hello world", "hello_world"]));
